package projetolp2.Tests;

import java.util.ArrayList;
import java.util.List;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import projetolp2.Sistem.Estabelecimento;
import projetolp2.Sistem.Opiniao;
import projetolp2.Sistem.OpinioesDeUsuarios;
import projetolp2.Sistem.Sistema;
import projetolp2.Sistem.TipoDeAlmoco;
import projetolp2.Sistem.TipoDeEstabelecimento;
import projetolp2.Sistem.Usuario;

public class TestaSistema {
	
	@Before
	public void criaSistema() throws Exception{
		
		Estabelecimento umEstabelecimento = new Estabelecimento("Campina Grill","Av. Manoel Tavares",TipoDeAlmoco.A_LACARTE, TipoDeEstabelecimento.RESTAURANTE);
		List<Estabelecimento> listaDeEstabelecimentos = new ArrayList<Estabelecimento>();
		listaDeEstabelecimentos.add(umEstabelecimento);
		List<OpinioesDeUsuarios> votosUsuario = new ArrayList<OpinioesDeUsuarios>();
		votosUsuario.add(OpinioesDeUsuarios.BASTANTE_BOM);
		Opiniao umaOpiniao = new Opiniao("12/05/2011","Mayra Kelly", votosUsuario);
		List<Opiniao> listaDeOpinioes = new ArrayList<Opiniao>();
		listaDeOpinioes.add(umaOpiniao);
     	Usuario umUsuario = new Usuario("Mayra Kelly",umaOpiniao);
		List<Usuario> listaDeUsuarios = new ArrayList<Usuario>();
		listaDeUsuarios.add(umUsuario);
		List<Estabelecimento> ranking = new ArrayList<Estabelecimento>();
		ranking.add(umEstabelecimento);
		
		Sistema.listaDeEstabelecimentos = listaDeEstabelecimentos;
		Sistema.listaDeOpinioes = listaDeOpinioes;
		Sistema.listaDeUsuarios = listaDeUsuarios;
		

	}
	
	@Test
	public void testaGets() throws Exception{
		
		try{
			Assert.assertEquals("Recuperar a lista de opinioes falhou!", Sistema.getListaDeOpinioes(),Sistema.listaDeOpinioes);
		}catch (Exception e){
			throw new Exception("Recuperar a lista de opinioes falhou!");
		}
		try{
			Assert.assertEquals("Recuperar a lista de estabelecimentos falhou!", Sistema.getListaEstabelecimentos(), Sistema.listaDeEstabelecimentos);
		}catch(Exception e){
			throw new Exception("Recuperar a lista de estabelecimentos falhou!");
		}
		try{
			Assert.assertEquals("Recuperar a lista de usuarios falhou!", Sistema.getListaUsuarios(), Sistema.listaDeUsuarios);
		}catch (Exception e){
			throw new Exception("Recuperar a lista de usuarios falhou!");
		}
		try{	
			Assert.assertEquals("Recuperar a popularidade do estabelecimento falhou!", Sistema.getPop("Cantina da Sayonara"), 3);
		}catch (Exception e){
			throw new Exception("Recuperar a popularidade do estabelecimento falhou!");
		}
	    
		
	}
	
	@Test 
	public void testaCadastraUsuarios() throws Exception{
		
//		List<String> listaDeOpiniao = new ArrayList<String>();
//		listaDeOpiniao.add("0");
//		try{
//			Sistema.cadastraUsuario("Nazareno", listaDeOpiniao);
//		}catch (Exception e){
//			throw new Exception("Cadastra usuario falhou!");
//		}
	
	}
	
	@Test
	public void testaRecomendacoes() throws Exception{
//		
//		try{
//			System.out.print("1");
//			Estabelecimento umEstabelecimento = new Estabelecimento("Campina Grill","Av. Manoel Tavares",TipoDeAlmoco.A_LACARTE, TipoDeEstabelecimento.RESTAURANTE);
//			System.out.print("1");
//			List<Estabelecimento> listaDeEstabelecimentos = new ArrayList<Estabelecimento>();
//			System.out.print("1");
//			listaDeEstabelecimentos.add(umEstabelecimento);
//			System.out.print(Sistema.recomendacao(0));
//			Assert.assertEquals("Recomendacao falhou!",Sistema.recomendacao(1), umEstabelecimento);		
//		}catch(Exception e){
//			throw new Exception("Recomendacao falhou!");
//		}
		
		
	}
	
	@Test
	public void testaConversoes(){
		
		
	}
	
	@Test
	public void testaNomes(){
		
		
	}
	
	@Test
	public void testaCriaListasERanking(){
		
	}
	
	@Test
	public void testaRanking(){
		
		
		
	}
	
	@Test
	public void testaEscreveUsuario(){
		
		
	}
	
    @Test
    public void testaFiltraEstabelecimentos(){
    	
    	
    }
                   
}
